'''
5.3.6 使用Pandas实现多表联合操作
'''

import pandas as pd

# 学生姓名表
students = pd.read_excel('students.xlsx', sheet_name='name')
# 分数表
score = pd.read_excel('score.xlsx', sheet_name='score')
# 年龄表
age =  pd.read_excel('age.xlsx', sheet_name='age')

# 合并
table = students.merge(score, how='left', on='ID').fillna(0)
# 将分数列中的数据设置为int类型
table['分数'] = table['分数'].astype(int)

table2 = table.merge(age, how='left', on='ID').fillna(0)
table2['年龄'] = table2['年龄'].astype(int)
print(table2)

table2 = table.merge(age, how='left', on='ID').fillna(0)

pass_womans = table2[(table2['年龄'] >= 20) & (table2['分数']>=60)]
print(pass_womans['名称'])


# 读取时，将ID设置为index，此时读入的DataFrame对象中就不存名为ID的列
students = pd.read_excel('students.xlsx', sheet_name='name', index_col='ID')
score = pd.read_excel('score.xlsx', sheet_name='score', index_col='ID')

# DataFrame中没有名为ID的列就无法使用on=ID，则可使用left_on与right_on
table = students.merge(score, how='left', left_on=students.index, right_on=score.index).fillna(0)
print(table)
